﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using KBManagement.DAL;
using KBManagement.Library;

namespace KBManagement
{
    public partial class ImportStore : Form
    {
        KBSQLClassDataContext context;
        private Store store;
        public ImportStore(Store store)
        {
            this.store = store;
            context = Utils.CreateInstance().GetDBContext();
            InitializeComponent();
            lblOneUnit.Text = "1 "+ store.Unit;
        }

        private void btnOk_Click(object sender, EventArgs e)
        {

            if (Utils.CreateInstance().isNull(txtQuantityImport.Text))
            {
                MessageBox.Show("Hãy điền vào số lượng");
                return;
            }
            if (!Utils.CreateInstance().isNumberDouble(txtQuantityImport.Text))
            {
                MessageBox.Show("Số lượng không đúng định dạng");
                return;
            }
            if (Convert.ToDouble(txtQuantityImport.Text) <= 0)
            {
                MessageBox.Show("Số lượng phải lớn hơn 0");
                return ;
            }
            if (Utils.CreateInstance().isNull(txtPrice.Text))
            {
                MessageBox.Show("Hãy điền vào giá tiền");
                return;
            }
            if (!Utils.CreateInstance().isNumberDouble(txtPrice.Text))
            {
                MessageBox.Show("Giá tiền không hợp lệ");
                return;
            }
            if (Convert.ToDouble(txtPrice.Text) <= 0)
            {
                MessageBox.Show("Số tiền phải lớn hơn 0");
                return;
            }
            context = new KBSQLClassDataContext();
            ConfirmImport confirm = new ConfirmImport(store.S_Name, txtQuantityImport.Text + " " + store.Unit, txtPrice.Text);
            if (confirm.ShowDialog() == DialogResult.OK)
            {
                ImportExportStore();

                InsertStockLog(true, Convert.ToDouble(txtQuantityImport.Text), Convert.ToDouble(txtPrice.Text) * Convert.ToDouble(txtQuantityImport.Text));
                MessageBox.Show("Nhân viên A thêm vào kho " + txtQuantityImport.Text + " " + lblUnitImport.Text + " " + store.S_Name);
                Utils.CreateInstanceLog().TransactionLogCommon("Nhân viên " + AdminSession.admin.UserName + " thêm vào kho " + txtQuantityImport.Text + " " + store.Unit + " " + store.S_Name+ " với giá "+ txtPrice.Text +"VND 1 "+store.Unit+" vào lúc " + DateTime.Now);
                Utils.CreateInstance().NotificationInforObserver();
                txtQuantityImport.Text = "";
                txtPrice.Text = "";
                Close();
            }
        }

        private void ImportExportStore()
        {
            Store aStore = context.Stores.SingleOrDefault(sto => sto.ID == store.ID);
            aStore.Quantity = aStore.Quantity + Convert.ToDouble(txtQuantityImport.Text);
            context.SubmitChanges();
        }

        private void InsertStockLog(Boolean type, Double quantity, Double price)
        {
            Random random = new Random();
            var storeLog = new Store_Log
            {
                ID = random.Next().ToString(),
                Price = Convert.ToDecimal(price),
                Quantity = quantity,
                TransferDate = Convert.ToDateTime(DateTime.Now.ToShortDateString()),
                TypeIE = type,
                StoreID = store.ID
            };
            context.Store_Logs.InsertOnSubmit(storeLog);
            context.SubmitChanges();
        }
    }
}
